
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
 */
package itm.dao.administracion;

//~--- non-JDK imports --------------------------------------------------------

import itm.exception.ControlException;

import itm.vo.administracion.CriteriosObservacionVO;

//~--- JDK imports ------------------------------------------------------------

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.ArrayList;
import java.util.List;

/**
 *
 *
 *
 *
 * @author JULI
 */
public class CriterioObservacionDAO {
    private CallableStatement callStmt = null;
    private ResultSet         res      = null;
    private String            sql      = "";
    Connection                dbConexion;

    public CriterioObservacionDAO(Connection dbConexion) {
        this.dbConexion = dbConexion;
    }

    public String actualizarHabilitar(CriteriosObservacionVO criteriosObservacionVO)
            throws ControlException, SQLException {
        String resultado = "";

        try {
            sql      = "{call ITM_ACTUALIZAR_CRITERIO_DE_OBSERVACION(?,?,?)}";
            callStmt = dbConexion.prepareCall(sql);
            callStmt.registerOutParameter(1, java.sql.Types.VARCHAR);
            callStmt.setString(2, criteriosObservacionVO.getIdCriterio());
            callStmt.setString(3, criteriosObservacionVO.getHabilitado());
            callStmt.execute();
            resultado = callStmt.getString(1);
        } catch (SQLException ce) {
            ce.getStackTrace();
        }

        return resultado;
    }

    public String crearCriterioObservacion(CriteriosObservacionVO criteriosObservacionVO)
            throws ControlException, SQLException {
        String temp = "";

        try {
            sql      = "{call ITM_CREAR_CRITERIO_DE_OBSERVACION(?,?,?,?)}";
            callStmt = dbConexion.prepareCall(sql);
            callStmt.registerOutParameter(1, java.sql.Types.VARCHAR);
            callStmt.setString(2, criteriosObservacionVO.getIdModulo());
            callStmt.setString(3, criteriosObservacionVO.getNombreCriterio());
            callStmt.setString(4, criteriosObservacionVO.getHabilitado());
            callStmt.execute();
            temp = callStmt.getString(1);
        } catch (SQLException ce) {
            ce.getStackTrace();
        }

        return temp;
    }

    public List<CriteriosObservacionVO> consultarCriterio(CriteriosObservacionVO criteriosObservacionVO)
            throws ControlException, SQLException {
        List<CriteriosObservacionVO> listaCriterio = new ArrayList<CriteriosObservacionVO>();

        try {
            sql      = "{call ITM_CONSULTAR_CRITERIO_OBSERVACION()}";
            callStmt = dbConexion.prepareCall(sql);
            res      = callStmt.executeQuery();

            while (res.next()) {
                criteriosObservacionVO = new CriteriosObservacionVO();
                criteriosObservacionVO.setIdCriterio(res.getString(1));
                criteriosObservacionVO.setNombreCriterio(res.getString(2));
                criteriosObservacionVO.setNombreModulo(res.getString(3));
                criteriosObservacionVO.setHabilitado(res.getString(4));

                if (res.getString(4).equals("NO")) {
                    criteriosObservacionVO.setAyuda("Habilitar");
                } else {
                    criteriosObservacionVO.setAyuda("Deshabilitar");
                }

                listaCriterio.add(criteriosObservacionVO);
            }
        } catch (SQLException ce) {
            ce.getStackTrace();
        }

        return listaCriterio;
    }

    public List<CriteriosObservacionVO> listarModulos() throws Exception {
        List<CriteriosObservacionVO> listaModulos = new ArrayList<CriteriosObservacionVO>();
        CriteriosObservacionVO       criteriosObservacionVO;

        try {
            sql      = "{call ITM_LISTA_MODULO()}";
            callStmt = dbConexion.prepareCall(sql);
            res      = callStmt.executeQuery();

            while (res.next()) {
                criteriosObservacionVO = new CriteriosObservacionVO();
                criteriosObservacionVO.setIdModulo(res.getString(1));
                criteriosObservacionVO.setNombreModulo(res.getString(2));
                listaModulos.add(criteriosObservacionVO);
            }
        } catch (Exception ce) {
            ce.getStackTrace();
        }

        return listaModulos;
    }
}
